/**
 * 
 */
package com.wskj.library.service;

import java.util.Date;
import java.util.List;

import com.wskj.library.pojo.BookCategory;
import com.wskj.library.pojo.BookInfo;
import com.wskj.library.pojo.BorrowInfo;

/**
 * @author 胡洋
 * @describe 
 * @Date 2018年3月22日下午5:51:51
 * @version 1.0
 */
public interface BookService {

	/**
	 * 查询所有图书的分类的信息 ..
	 * @return
	 */
	List<BookCategory> queryAllCategory();

	
	/**保存图书信息的方法 
	 * @param bookInfo 图书的信息 
	 * @return
	 */
	boolean saveBookInfo(BookInfo bookInfo);

    /**
     * 根据书籍编号 获取书籍的信息 
     * @param id
     * @return
     */
	BookInfo getBookById(int id);

   /**
    *   修改书籍的信息  
    * @param bookInfo
    * @return
    */
	boolean updateBookInfo(BookInfo bookInfo);

    /**
     * 根据id 删除书籍的信息 
     * @param id 书籍的编号 
     * @return
     */
	boolean deleteBookById(int id);

    /**
     *  查询满足条件的个数 
     * @param bname 书籍的名称 
     * @param author 作者 
     * @param cid 分类的编号
     * @param status 状态 
     * @return
     */
	long getCountsByBname(String bname, String author, int cid, int status);

  /**
   * 分页查询图书的列表信息 
   * @param bname 书籍名称
   * @param author 作者
   * @param cid 分类编号
   * @param status 状态
   * @param index 起始页面
   * @param pageSize 每页多少条
   * @return
   */
	List<BookInfo> getBooksWithPage(String bname, String author, int cid, int status, int index, int pageSize);


	/** 批量删除图书的信息 ...
	 * @param id  需要删除图书的数组 ....
	 * @return
	 */
	boolean deleteBookById(String[] id);


	/** 查询所有的图书  ... 导出所有的图书的信息  
	 * @return
	 */
	List<BookInfo> queryAllBooks();


	/** 批量导入 书籍的信息  
	 * @param books 导入的书籍的信息  
	 * @return
	 */
	boolean saveBooks(List<BookInfo> books);


	/** 查询满足条件的总条数 
	 * @param bname  图书的名称
	 * @param rname  读者的名称 
	 * @param borrowTime  借出的时间  
	 * @return
	 */
	long getBorrowsCounts(String bname, String rname, Date borrowTime);


	/**分页查询 满足条件的  借阅信息列表 
	 * @param bname  书籍名称 
	 * @param rname  读者的名称
	 * @param borrowTime  借出时间 
	 * @param index  当前页
	 * @param pageSize 每页的条数 
	 * @return
	 */
	List<BorrowInfo> getBorrowsWithPage(String bname, String rname, Date borrowTime, int index, int pageSize);

}
